#ifndef _DE_RENDER_RESOURCE_H_
#define _DE_RENDER_RESOURCE_H_

#include "Material.h"
#include "Geometry.h"
#include "DeSmartPointer.h"

namespace DeviousRenderer
{
	class DeResourceType : public DeRefCountedObject
	{};
	class DeBuffer : public DeResourceType{};
	class DeTexture1D : public DeResourceType{};
	class DeTexture2D : public DeResourceType{};
	class DeTexture3D : public DeResourceType{};
	class DeRenderTargetView : public DeResourceType{};

	typedef TSmartPointer<DeTexture2D> DeTexture2DPtr;
	typedef TSmartPointer<DeRenderTargetView> DeRenderTargetViewPtr;

	class DeRenderResource
	{
	public:
		DeRenderResource();
		virtual ~DeRenderResource();

		virtual void Initialize();
		virtual void InitResource(){};

		virtual void Release();
		virtual void ReleaseResource(){};

	private:
		bool	m_bIsInitialized;
	};
}
#endif//_DE_RENDER_RESOURCE_H_